AWS Outposts に必要なネットワーク接続を理解しよう #reinvent
こんにちは、菊池です。
AWS re:Invent 2019でいよいよ一般提供開始がアナウンスされた、AWS Outposts。気になっている方も多いと思います。本記事では、オンプレミスに設置するOutpostsを、どのようにオンプレミス/AWSとネットワーク的に接続するのか、どのように設計すべきかを紹介します。
参考資料
ネットワーク接続に必要な情報は、公式ドキュメントに詳細に記載されています。こちらを参考に読み解いていきます。
Outpostsのネットワーク
論理構成
Outpostsを利用すると、以下のように自社専用のAvailability ZoneのようにVPC内のサブネットを作成し、サブネット内にEC2などのインスタンスを配置することが可能になります。オンプレミスのネットワークとは、Loal Gatewayを経由して通信しますので、VPCサブネットにはLocal Gatewayを経由するルートを設定します。Outposts上のインスタンスとAWSリージョン側のリソース(VPC内のインスタンスやVPCエンドポイント)とは透過的に通信が可能になります。
AWS Outposts Network Components
Outpostsで発生するトラフィック
上記の図では、OutpostsのサブネットとAWSリージョン側サブネットはVPC内部でつながって見えますが、実態としてはOutpostsのラックに物理的に接続されたネットワーク回線を経由して行われます。Outpostsに接続される物理的なネットワーク回線には、論理的に2つのネットワークに分かれていて、以下のトラフィックが発生します。
- Local Gateway
- VPC内リソース(EC2など)とオンプレミス環境の間で発生するユーザートラフィック
- Service Link
- Outpostsそのもののモニタリングに利用されるトラフィック
- Outposts内に起動したリソース(EC2など)の制御に利用されるトラフィック(API操作やCloudWatchメトリクス送信、Snapshotデータなどを含む)
- Outposts側リソースとAWSリージョン側リソースがVPC内で通信するトラフィック
例えば、Outposts内に起動したEC2が、オンプレミスのサーバーと通信する際はLocal Gatewayを通ります。Outposts内に起動したEC2が、AWSリージョン側EC2と通信したり、Snapshotの取得を行うと、Service Link側にトラフィックが発生します。
これらを考慮して、Outpostsとの接続に利用する回線の帯域幅を決定する必要があります。
Outpostsとの接続方法
それでは、Outpostsとの具体的な接続方法です。各レイヤごとにみていきます。
物理層
Outpostsのラックには、物理的に2つのネットワーク機器が搭載されます。それぞれからオンプレミス側のネットワーク機器へ、合わせて最小2つの接続が必要です。1G、10G、40G、100Gのアップリンクスピードが利用できます。アップリンク速度ごとに利用可能なポート数が異なります。
アップリンク | アップリンクポート数 |
1G | 1/2/3/4/5/6/7/8 |
10G | 1/2/3/4/8/12/16 |
40G | 1/2/3/4 |
100G | 1/2/3/4 |
SMF/MMF/MMF OM4に対応しコネクタはLCとなっています。
データリンク層
Outpostsとの接続にはLink Aggregation Control Protocol(LACP)が利用されます。対向となるオンプレミス側でもLACPの有効化が必要です。
Outpost Connectivity to the Local Network - Link Aggregation
Local GatewayとService Link用に、2つのVLANを利用してトラフィックが分離されます。IEEE 802.1Qによるカプセル化(タギング)を設定します。
Outpost Connectivity to the Local Network - VLANs
ネットワーク層
Outpostsとオンプレミス側とのポイントツーポイント接続用に、/30または/31のIPアドレスを割り当てます。Local Gateway用、Service Link用にそれぞれ2接続あるので、全部で4つのネットワークと8つのIPアドレスが必要です。例えば、以下のように割り当てます。
Outpostsネットワーク機器 | オンプレミスネットワーク機器 | ||
Service Link VLAN | 接続1 | 172.16.0.1/30 | 172.16.0.2/30 |
接続2 | 172.16.0.5/30 | 172.16.0.6/30 | |
Local Gateway VLAN | 接続1 | 10.0.0.1/30 | 10.0.0.2/30 |
接続2 | 10.0.0.5/30 | 10.0.0.6/30 |
また、OutpostsとオンプレミスではそれぞれBGPにて経路交換を行います。
Service Linkの通信
Service Linkでは、Outposts内の各種制御デバイスと、AWSのAPIが通信を行います。Service Linkの通信は、パブリックインターネットもしくはDirectConnectのパブリック接続が必要で、OutpostsとAWSリージョンの間でVPNで接続されます。
Outposts側には、あらかじめ/26のサイズのネットワークアドレスを割り振っておき、この範囲のIPアドレスがOutpost内のデバイスに割り当てられます。ルーティング可能な所有するパブリックIPもしくは、プライベートIP(NATしてパブリックネットワークに出る場合)から割り当てましょう。このネットワークがOutpostsからオンプレミス側ネットワーク機器にBGPにて広報されます。Outposts側にはデフォルトルート(0.0.0.0/0)もしくは利用するAWSリージョンのパブリックIPを広報する必要があります。
- Outspotsからオンプレ側に広報 -> Outpostsに割り当てた/26のネットワーク(実際は/27のネットワーク2つ)
- オンプレ側からOutpostsに広報 -> デフォルトルート(0.0.0.0/0)もしくは利用するAWSリージョンのパブリックIP
また、Service LinkではAWSリージョンとの通信のため、以下のアドレス/ポートを許可します。
プロトコル | Sourceポート | Sourceアドレス | Destinationポート | Destinationアドレス |
UDP | 443 | Outpostsに割り当てた/26 | 443 | AWSリージョンのパブリックIP |
TCP | 1025-65535 | Outpostsに割り当てた/26 | 443 | AWSリージョンのパブリックIP |
Local Gatewayの通信
Local Gatewayでは、VPC内のリソースとオンプレミスサーバの間でのユーザートラフィックが流れます。そのため、以下の経路情報をBGPで交換します。
- Outspotsからオンプレ側に広報 -> VPC CIDR
- オンプレ側からOutpostsに広報 -> 連携が必要なオンプレミスネットワークのCIDR
まとめ
以上の接続をまとめると、以下のようなイメージとなります。ちょっと情報多くてごちゃごちゃしてますが、1枚の絵に描いてみました。(IPアドレスは環境に応じて割り当てます)
Outpostsを設置するにあたり、ネットワーク接続に関して事前に準備や設計が必要な情報をまとめました。Outpostsの導入を検討されている方の一助になれば幸いです。